package com.wjm.mappackage;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * Data:2022年07月07日
 * Author:wjm
 * Content: Map接口
 *
 *  Map接口的实现类 HashMap和 LinkedHashMap 对应着Set接口的HashMSet和 LinkedHashSet去学习
 *
 *  将键映射到值的对象。一个映射不能包含重复的键；每个键最多只能映射到一个值。
 *
 *  Map中常用的方法：
 *           public V put(K key, V value): 把指定的健和值添加到Map集合中
 *
 *           public V remove(Object key): 把指定的健对应的键值对从集合中删除，返回被删除的键值对中的值
 *
 *           public V get(Object key): 根据指定的健，在集合中获取对应的值
 *
 *           public boolean containsKey(Object key): 用于检查集合中是否包含给定的健
 *
 *           public boolean containsVaule(Object vaule): 用于检查集合中是否包含给定的值
 *
 *           public Set<K> keySet(): 获取Map集合中所有的健，存储到Set集合
 *
 *           public Set<Map.Entery<K,V>> enterSet(): 获取到Map集合所有键值对对象，存储到Set集合
 *
 *
 *   注意：
 *       put方法返回值是vaule，如果当前添加的key已经在map中有存储的键值对，那么在进行添加此key的值时，
 *       会将被替换调的原先的vaule返回，如果当前的key是第一次添加则放回null。
 *
 */
public class MapDemo {
    public static void main(String[] args) {
        //创建Map集合对象
        Map<String,String> map = new HashMap<>();
        //添加元素
        String s1 = map.put("詹姆斯","king");
        String s2 = map.put("欧文","欧神仙");
        String s3 = map.put("库里","小学生");
        String s4 = map.put("詹姆斯","小皇帝");
        System.out.println(map);
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
        System.out.println(s4);

        //提供key获取vaule
        String v = map.get("欧文");
        System.out.println("----------------------");
        System.out.println(v);

        //将对应的键值对移除
        v = map.remove("库里");
        System.out.println("----------------------");
        System.out.println(v);
        System.out.println(map);

        //检查集合中是否包含给定的健
        boolean b = map.containsKey("欧文");
        System.out.println("-----------------------");
        System.out.println(b);

        //检查集合中是否包含给定的值
        b = map.containsValue("欧神仙");
        System.out.println("-----------------------");
        System.out.println(b);

        //将map中的key转化为set集合中的元素
        Set set1 = map.keySet();
        System.out.println("-----------------------");
        System.out.println(set1);

        //将map集合转化为set集合
        Set set2 = map.entrySet();
        System.out.println("-----------------------");
        System.out.println(set2);

        //将集合中的所有键值对清空
        map.clear();
        System.out.println("-----------------------");
        System.out.println(map);

    }
}
